// AddressPanel.vue
<script setup lang="ts">
  import { computed } from 'vue'
  // 导入声明文件
  import type { AddressItem } from '@/types/address'
  // 导入持久化数据库
  import { useAddressStore } from '@/stores/index'
  // 导入请求API
  import { putAddressIdAPI } from '@/services/address'
  const addressStore = useAddressStore()

  // 子组件调父组件
  const emit = defineEmits<{
    (event : 'close') : void
  }>()

  //接受父传子地址列表
  const props = defineProps<{
    address : AddressItem[]
  }>()

  // 地址点击前端页面修改
  const addressActive = (index : number) => {
    props.address.forEach(ev => ev.isDefault = 0)
    props.address[index].isDefault = 1
  }

  // 查找选中的地址
  const checkoutDefaultAddress = computed(() => {
    return props.address.find(item => item.isDefault === 1)
  })

  // 地址确认
  const onDefaultAddress = async () => {
    // 存入持久化
    addressStore.changeAddressProfile(checkoutDefaultAddress.value!)
    // 修改商品值
    await putAddressIdAPI(checkoutDefaultAddress.value!.id, { isDefault: checkoutDefaultAddress.value!.isDefault })
    // 关闭组件
    emit('close')
  }
</script>

<template>
  <view class="address-panel">
    <!-- 关闭按钮 -->
    <text class="close icon-close" @tap="emit('close')"></text>
    <!-- 标题 -->
    <view class="title">配送至</view>
    <!-- 内容 -->
    <view class="content">
      <view class="item" v-for="(item,index) in props.address" @tap="addressActive(index)">
        <view class="user">{{item.receiver}} {{item.contact}}</view>
        <view class="address">{{item.fullLocation}}{{item.address}}</view>
        <text class="icon " :class="item?.isDefault? 'icon-checked':'icon-ring' "></text>
      </view>
    </view>
    <view class="footer">
      <view class="button primary">
        <navigator hover-class="none" url="/pagesMember/address-form/address-form">
          新建地址
        </navigator>
      </view>
      <view v-if="true" class="button primary" @tap="onDefaultAddress">确定</view>
    </view>
  </view>
</template>

<style lang="scss">
  .address-panel {
    padding: 0 30rpx;
    border-radius: 10rpx 10rpx 0 0;
    position: relative;
    background-color: #fff;
  }

  .title {
    line-height: 1;
    padding: 40rpx 0;
    text-align: center;
    font-size: 32rpx;
    font-weight: normal;
    border-bottom: 1rpx solid #ddd;
    color: #444;
  }

  .close {
    position: absolute;
    right: 24rpx;
    top: 24rpx;
  }

  .content {
    min-height: 300rpx;
    max-height: 540rpx;
    overflow: auto;
    padding: 20rpx;

    .item {
      padding: 30rpx 50rpx 30rpx 60rpx;
      background-size: 40rpx;
      background-repeat: no-repeat;
      background-position: 0 center;
      background-image: url(https://pcapi-xiaotuxian-front-devtest.itheima.net/miniapp/images/locate.png);
      position: relative;
    }

    .icon {
      color: #999;
      font-size: 40rpx;
      transform: translateY(-50%);
      position: absolute;
      top: 50%;
      right: 0;
    }

    .icon-checked {
      color: #27ba9b;
    }

    .icon-ring {
      color: #444;
    }

    .user {
      font-size: 28rpx;
      color: #444;
      font-weight: 500;
    }

    .address {
      font-size: 26rpx;
      color: #666;
    }
  }

  .footer {
    display: flex;
    justify-content: space-between;
    padding: 20rpx 0 40rpx;
    font-size: 28rpx;
    color: #444;

    .button {
      flex: 1;
      height: 72rpx;
      text-align: center;
      line-height: 72rpx;
      margin: 0 20rpx;
      color: #fff;
      border-radius: 72rpx;
    }

    .primary {
      color: #fff;
      background-color: #27ba9b;
    }

    .secondary {
      background-color: #ffa868;
    }
  }
</style>
